// pages/order_list/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    navBarHeight: 0, // 导航栏总高度 = 状态栏高度 + 导航栏高度
    contentTop: 0, // 内容区域top位置
    currentTab: 0, // 当前选中的tab索引
    tabs: [
      { name: '全部', status: 'all' },
      { name: '待发货', status: 'pending_shipment' },
      { name: '待收货', status: 'pending_receipt' },
      { name: '待评价', status: 'pending_review' }
    ],
    orderList: [], // 订单列表
    loading: false, // 加载状态
    hasMore: true, // 是否还有更多数据
    page: 1, // 当前页码
    pageSize: 10 // 每页数量
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 计算导航栏高度
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight
    const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
    
    this.setData({
      navBarHeight,
      contentTop: navBarHeight
    })

    // 根据来源设置默认tab
    this.setDefaultTab(options.from)
    
    // 加载订单列表
    this.loadOrderList()
  },

  /**
   * 设置默认tab
   */
  setDefaultTab(from) {
    let defaultTab = 0
    
    switch(from) {
      case 'pending_shipment':
        defaultTab = 1
        break
      case 'pending_receipt':
        defaultTab = 2
        break
      case 'pending_review':
        defaultTab = 3
        break
      default:
        defaultTab = 0
    }
    
    this.setData({
      currentTab: defaultTab
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      page: 1,
      orderList: [],
      hasMore: true
    })
    this.loadOrderList(true)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (!this.data.loading && this.data.hasMore) {
      this.loadOrderList()
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 返回按钮点击事件
   */
  handleBack() {
    wx.navigateBack()
  },

  /**
   * tab切换事件
   */
  onTabChange(e) {
    const index = e.currentTarget.dataset.index
    if (index !== this.data.currentTab) {
      this.setData({
        currentTab: index,
        page: 1,
        orderList: [],
        hasMore: true
      })
      this.loadOrderList()
    }
  },

  /**
   * 加载订单列表
   */
  async loadOrderList(isRefresh = false) {
    if (this.data.loading) return
    
    this.setData({ loading: true })
    
    try {
      const { currentTab, tabs, page, pageSize, orderList } = this.data
      const status = tabs[currentTab].status
      
      // 调用云函数获取订单列表
      const result = await wx.cloud.callFunction({
        name: 'getOrderList',
        data: {
          status: status === 'all' ? null : status,
          page,
          pageSize
        }
      })
      
      if (result.result.success) {
        let newOrders = result.result.data || []
        
        // 处理订单状态文本映射
        newOrders = newOrders.map(order => ({
          ...order,
          statusText: order.status === 'pending_payment' ? '已取消' : (order.statusText || this.getStatusText(order.status))
        }))
        
        const updatedOrderList = page === 1 ? newOrders : [...orderList, ...newOrders]
        
        this.setData({
          orderList: updatedOrderList,
          hasMore: newOrders.length === pageSize,
          page: page + 1
        })
      } else {
        wx.showToast({
          title: result.result.message || '加载失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('加载订单列表失败:', error)
      wx.showToast({
        title: '网络错误',
        icon: 'none'
      })
    } finally {
      this.setData({ loading: false })
      if (isRefresh) {
        wx.stopPullDownRefresh()
      }
    }
  },

  /**
   * 跳转到订单详情
   */
  goToOrderDetail(e) {
    const orderId = e.currentTarget.dataset.orderId
    // 不再默认隐藏底部按钮，让订单详情页面根据订单状态自行决定
    wx.navigateTo({
      url: `/pages/order_detail/index?orderId=${orderId}`
    })
  },

  /**
   * 格式化订单状态显示文本
   */
  getStatusText(status) {
    const statusMap = {
      'pending_payment': '已取消',
      'paid': '已支付',
      'pending_shipment': '待发货', 
      'pending_receipt': '待收货',
      'pending_review': '待评价',
      'paid': '已支付',
      'completed': '已完成',
      'cancelled': '已取消'
    }
    return statusMap[status] || '未知状态'
  },

  /**
   * 格式化时间显示
   */
  formatTime(dateStr) {
    if (!dateStr) return ''
    const date = new Date(dateStr)
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    const hour = String(date.getHours()).padStart(2, '0')
    const minute = String(date.getMinutes()).padStart(2, '0')
    return `${year}-${month}-${day} ${hour}:${minute}`
  },

  /**
   * 去购物
   */
  goShopping() {
    wx.switchTab({
      url: '/pages/shop/index'
    })
  }
})